// console.log('hello world\n');
// console.log('cuifan');
// console.log('1\t2\t3\t');
// console.log('234\b1');
// console.log('1234\r1236');
// console.log('1235');
// console.log('123456\f12354');
// console.log('1562\'');
// console.log('1562\"');
// console.log('1235\`');
// console.log('\x41'); // 16
// console.log('\u03a3');

// 2.字符串的特点
// 字符串不可变，一旦创建，要修改变量中得字符串不知，必须销毁原来的字符串
// let lang = "Java"
// lang += 'Script'

// // 3.转换为字符串
// // > toString()
// let age = 11
// console.log(age.toString()); // '11'
// console.log(true.toString()); // 'true'
// console.log('1233'.toString()); // '1233' 返回自身的副本
// // 其实都是调用了对象的这个toString()方法，基本数据类型调用的时候会包装为对象
// // null 和 undefined没有toString()

// // 对数值进行调用
// let num = 10
// console.log(num.toString()); // "10"
// console.log(num.toString(2)); // "1010"
// console.log(num.toString(8)); // '12'
// console.log(num.toString(16)); // 'a'

// 不确定一个值是不是undefined或者null,使用String()方法、
// null ---> 'null'
// undefined ---> 'undefined'
// console.log(String(null)); //"null"
// console.log(String(undefined)); // "undefined"
// console.log(String(true)); // "true"
// console.log(String(10)); // "10"

// 4.模板字符串
// 技术上讲，模板字面量不是字符串，而是一种特殊的JavaScript句法表达式吗，求值后得到的是字符串
// let value = 5
// let exponent = 'second'
// let str = `hello ${value+1} ${exponent}`
// console.log(str);
// 所有插入的值都会使用toString()强制转换为字符串，任何js表达式都能用于插值

// 5.模板字面量标签函数
// console.log(['123', '\n', '\u00A9']);
// function printRaw(strings) {
//   console.log(strings.raw);
//   for (let i of strings.raw) {
//     console.log(i);
//   }
// }
// printRaw `\u00A9${'and'}\n`
console.log(`\\u00A9` === String.raw `\u00A9`);
let a = ['\n', '\r']
console.log(a.raw);